The present invention relates to software installation, and more particularly to a method, computer program product and system for implementing a software installation process.
When a new software program is acquired (usually through licensing rather than outright purchase), it usually must be installed on the target data processing system before it can be used. As used herein, the term “data processing system” is intended to have a broad meaning, and may include personal computers, laptop computers, palmtop computers, handheld computers, network computers, servers, workstations, cellular telephones and similar wireless devices, personal digital assistants and other electronic devices on which software programs may be installed.
Typically, software programs include as a component thereof an installer, which is software that substantially automates the installation process. In addition, computer operating systems (software which coordinates resource use by, and interaction between, other software) may include an installer for use in installing drivers or other software.
In addition, many commercial software programs are provided with a process by which they may be updated. Such a process can be included as a component of the software program itself, or may be provided externally. The provision of an updating process is desirable because software programs are frequently modified by end users, for example by applying bug fixes or enhancements (such as new versions of the software).
There are many different processes for installing and/or updating software programs. Some processes are entirely automated and substantially invisible to the user, while others are interactive. Some are complex while others are simpler. Software programs used to install new software, to install updates to software, and to uninstall (remove) software are referred to herein as “installer applications”. The term “installer applications” is intended to encompass both “standalone” software programs that can be used to install a variety of software applications (for example, such as installers that may be provided with an operating system), as well as software programs that are adapted to install only a single software application (and may be integrated with the installation file package for that software application). Installer applications, when run, implement a software installation process.
One major issue facing installer applications is that if a catastrophic failure occurs while a target product is being installed or while an update is being applied to a target product, it may be impossible for the installer application to recover from the failure. The types of catastrophic failures that may occur during installation or updating of a software program include CPU failure, hard drive failure, general hardware failure, computer reset, inadvertent power down, loss of power, initiation of a kill process or software failure (which may or may not occur in the installer application itself).
In the event of a catastrophic failure, one or more aspects of the data processing system on which the installer application was running may be in a corrupted state. For example, only some of the required files may have been copied into storage accessible by the data processing system, or reconfiguration of an aspect of the data processing system may be incomplete. These problems are often compounded by the fact that in some failure scenarios, the user is not aware of the corrupted state and the installer application has no way to determine that the data processing system has been corrupted. If the installer application is launched again, the corruption of the data processing system may be further compounded by adding additional maintenance to the already unstable system. The system may behave erratically, unpredictably, and may crash.